package com.example.onlinemallsystem.mapper;

import com.example.onlinemallsystem.entity.Cart;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 购物车操作 Mapper 接口
 * 对应 XML 文件: resources/mapper/CartMapper.xml
 */
@Mapper
public interface CartMapper {

    /**
     * 添加商品到购物车
     * @param cart 购物车项实体，包含用户ID、商品ID、数量等信息
     * @return 插入记录的主键ID（通过useGeneratedKeys自动回填到cart对象）
     */
    int addToCart(Cart cart);

    /**
     * 更新购物车商品信息
     * @param cart 购物车项实体，可更新数量、选中状态等
     * @return 受影响的行数
     */
    int updateCartItem(Cart cart);

    /**
     * 逻辑删除购物车商品
     * @param id 购物车项ID
     * @return 受影响的行数
     */
    int deleteCartItem(Long id);

    /**
     * 根据用户ID和商品ID查询购物车项
     * @param userId 用户ID
     * @param productId 商品ID
     * @return 购物车项实体，包含商品和用户信息
     */
    Cart getCartItemByUserAndProduct(@Param("userId") Long userId, @Param("productId") Long productId);

    /**
     * 查询用户购物车列表
     * @param userId 用户ID
     * @return 购物车项列表，包含商品和用户信息，按创建时间倒序排列
     */
    List<Cart> listCartItemsByUser(Long userId);
}